﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HA.MT3DMS.FileLayer
{
   public  class FStressPeriod
    {

       public FStressPeriod(double len,int step,double mult)
       {
           this._PERLEN = len;
           this._NSTP = step;

           this._TSMULT = mult;
 
       }




        private double _PERLEN;
        /// <summary>
        /// 当前应力期的长度。如果流体解为瞬态，
        /// 这里指定的PERLEN必须等于水流模型指定的PERLEN。
        /// 如果流体解为稳态，PERLEN可以被设定为任何理想长度
        /// </summary>
        public double PERLEN
        {
            get { return _PERLEN; }
            set { _PERLEN = value; }
        }
        private int _NSTP;
        /// <summary>
        /// 瞬态流体解在当前应力期中的时步数。
        /// 如果流体解为稳态，NSTP=1
        /// </summary>
        public int NSTP
        {
            get { return _NSTP; }
            set { _NSTP = value; }
        }
        private double _TSMULT;
        /// <summary>
        /// 是瞬态流体解所使用的连续时步长的乘数，只有当NSTP>1时使用
        /// </summary>
        public double TSMULT
        {
            get { return _TSMULT; }
            set { _TSMULT = value; }
        }
        private List<double> _TSLNGH = new List<double>();
        /// <summary>
        /// 如果TSMULT≦0，输入
        /// 给出当前应力期流体解的时步长度。
        /// 此记录只有当流体解的时步长度不是基于水流模型的几何级数时需要。
        /// 如果NSTP>8，在尽可能多的行数输入TSLNGH
        /// </summary>
        public List<double> TSLNGH
        {
            get { return _TSLNGH; }
            set { _TSLNGH = value; }
        }

        private double _DT0;
        /// <summary>
        /// 每个流体解时步中用户指定的运移步长。取决于显式解或隐式解，DT0有不同的解释：
        /// </summary>
        public double DT0
        {
            get { return _DT0; }
            set { _DT0 = value; }
        }
        private int _MXSTRN;
        /// <summary>
        /// 在一个流体解时间步内允许的运移步的最大数量。
        /// 如果流体时间步内运移步的数目超过MXSTRN，模拟结束
        /// </summary>
        public int MXSTRN
        {
            get { return _MXSTRN; }
            set { _MXSTRN = value; }
        }
        private double _TTSMULT;
        /// <summary>
        /// 当使用GCG求解包并且使用标准有限差分法求解对流项时一个流体时间步内连续运移步的乘数。
        /// 一般来说一个1.0到2.0间的数值比较适合
        /// </summary>
        public double TTSMULT
        {
            get { return _TTSMULT; }
            set { _TTSMULT = value; }
        }
        private double _TTSMAX;
        /// <summary>
        /// 当运移步长乘数TTSMULT>1.0时所允许的最大运移步长。
        /// 设置TTSMAX=0将不强加任何上限
        /// </summary>
        public double TTSMAX
        {
            get { return _TTSMAX; }
            set { _TTSMAX = value; }
        }

    }
}
